package com.scau.os.deviceManagement;

import com.scau.os.course_manager.bean.PCB;

public class Peripheral extends HardDevice{
    //status为 【127】代表被占用【0】正常 【1】数据错误 【2】地址错误
    public Peripheral(String name) {
        this.name = name;
    }
    int interval;//申请使用设备的时间
    private PCB pcb;

    public int getInterval() {
        return interval;
    }

    /**
     *allocate申请设备函数，并且传入需要使用的时间
     */
    public boolean allocate(int time){
        if (status!=127) {
            status = 127;
            this.interval = time;
            return true;
        }
        return false;
    }

    /**
     * 更新设备状态，若之前挂中断状态，取消之；若被占用，扣除clock个计时周期（每CPU周期开始时执行）
     * @param clock
     */
    public boolean refresh(int clock){
        if (status==-1) {
            status = 0;
            return true;
        }
        if (interval>0) {
            interval -= clock;
            if (interval<=0) {
                status=0;
                interval=0;
            }
            return true;
        }
        return false;
    }

    /**
     * 重置设备的计时器和状态
     */
    public void reset(){
        interval=0;
        status=0;
    }
}
